<template>
  <div>
    <common-head :title="$route.name"/>
    <div class="container">
      <!-- 选择收货地址 -->
      <van-contact-card
        :type="contactType"
        :name="currentContact.linkMan"
        :tel="currentContact.mobile"
        @click="choseContact"
      />
      <!-- /选择收货地址 -->
      <!-- 下单商品 -->
      <van-card
        v-for="item in items"
        :key="item.id"
        :num="item.number"
        :price="item.price"
        :title="item.name"
        :thumb="item.pic"
      />
       <!-- 下单商品 -->
    </div>
    <van-submit-bar :price="3050" button-text="提交订单" @submit="onSubmit" />
  </div>
</template>

<script>
import CommonHead from '_components/CommonHead'
import { fetchAddress, fetchCartInfo, getContactInfo } from '_api'
import { getToken } from '_utils'
export default {
  data () {
    return {
      // 添加联系人状态
      contactType: 'add',
      // 收货人
      currentContact: {
      },
      items: []
    }
  },
  created () {
    this.fetchContact()
    this.fetchItems()
  },
  methods: {
    choseContact () {
      // 点击切换联系人
      /*
        1 如果没有收货人,进入添加收货地址页面,进行添加
        2 有点击进入联系人列表进行,选择收货地址
      */
      if (this.contactType === 'add') {
        // 添加
        this.$router.push('/addressAdd')
      } else {
        // 进入列表切换
        this.$router.push('/addressList')
      }
    },
    fetchItems () {
      fetchCartInfo({
        token: getToken()
      }).then(res => {
        if (res.data.code === 0) {
          // 所有的已经选中的商品
          this.items = res.data.data.items.filter(item => item.selected)
        }
      })
    },
    fetchContact () {
      // 判断是否从 联系人列表 切换了联系人
      if (this.$route.query.contactId) {
        // 从联系人列表回来的
        getContactInfo({
          id: this.$route.query.contactId,
          token: getToken()
        }).then(res => {
          if (res.data.code === 0) {
            this.currentContact = res.data.data.info
            this.contactType = 'edit'
          }
        })
        return
      }
      // 获取收货地址
      fetchAddress({
        token: getToken()
      }).then(res => {
        if (res.data.code === 0) {
          this.contactType = 'edit'
          /*
            当前订单的收货人
              首选 默认联系人
              没有默认联系人，选择收货地址中的 第一个联系人
              没有联系人 type变成add
          */
          const contacts = res.data.data.result
          const defaultContact = contacts.find(contact => contact.isDefault)
          if (defaultContact) {
            // 有默认联系人
            this.currentContact = defaultContact
          } else {
            // 没有默认联系人 但是有其他联系人 当前收货地址是第一个
            this.currentContact = contacts[0]
          }
        }
      })
    }
  },
  components: {
    CommonHead
  }
}
</script>

<style lang="scss" scoped>
.container{
  padding-top: 46px;
  padding-bottom: 50px;
}
</style>
